﻿Public Class ctrCidade
    Inherits ctrPadrao

#Region "Declaração de variáveis"
    Private objCidade As New Persistencia.perCidade
    Private objBairro As New Controle.ctrBairro
    Private iIdCidade As Int32
    Private iIdEstado As Int32
#End Region

#Region "Propriedades"

    Public WriteOnly Property IDEstado() As Int32
        Set(ByVal value As Int32)
            Me.iIdEstado = value
        End Set
    End Property
    Public Property IDCidade() As Int32
        Get
            Return Me.iIdCidade
        End Get
        Set(ByVal value As Int32)
            Me.iIdCidade = value
        End Set
    End Property

    Public ReadOnly Property sqlConsulta() As String
        Get
            Return Me.objCidade.sqlConsulta(Me.iIdEstado)
        End Get
    End Property

#End Region

#Region "Métodos públicos"

    Public Function salvar(ByVal iIdCidade As Int32, _
                           ByVal iIdEstado As Int32, _
                           ByVal sCidade As String) As Boolean

        Dim bResultado As Boolean = False

        If iIdCidade > 0 Then
            Me.alterarCidade(iIdCidade, _
                             iIdEstado, _
                             sCidade)
            Me.IDCidade = iIdCidade
            bResultado = True
        Else
            Me.IDCidade = Me.inserirCidade(sCidade, _
                                           iIdEstado)

            bResultado = True
        End If

        Return bResultado

    End Function

    Public Function excluir(ByVal iIdCidade) As Boolean
        Dim bResultado As Boolean = True

        If Me.objBairro.verificarCidadeBairro(iIdCidade) Then
            bResultado = False
        Else
            bResultado = True
        End If

        If bResultado Then
            Me.excluirCidade(iIdCidade)
        End If

        Return bResultado
    End Function

    Private Sub excluirCidade(ByVal iIdCidade As Int32)

        Me.objCidade.excluirCidade(iIdCidade)

    End Sub

    Public Function selecionarCidade(ByVal iIdCidade As Int32) As DataRow
        Try
            Return Me.objCidade.selecionarCidade(iIdCidade)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'selecionarCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try
    End Function

    Public Function verificarCidadeEstado(ByVal iIdEstado As Int32) As Boolean
        Try
            Dim dtDados As New DataTable
            Dim drDados As DataRow
            Dim bRetorno As Boolean

            dtDados = Me.objCidade.verificarCidadeEstado(iIdEstado)

            If Not dtDados Is Nothing Then
                For Each drDados In dtDados.Rows
                    If drDados.Item("IDEstado") <> 0 Then
                        bRetorno = True
                    Else
                        bRetorno = False
                    End If
                Next
            End If

            Return bRetorno
        Catch ex As Exception
            Throw New Exception("Exceção no método 'verificarCidadeEstado'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try
    End Function
    Public Function retornarNomeCidade(ByVal iIdCidade As Int32) As String

        Try
            Dim dtDados As New DataTable
            Dim vRetorno As String

            dtDados = Me.objCidade.selecionarCampoCidade("Cidade", iIdCidade)

            If Not dtDados Is Nothing Then
                vRetorno = dtDados.Rows(0).Item("Cidade").ToString
            Else
                vRetorno = ""
            End If

            Return vRetorno

        Catch ex As Exception

            Throw New Exception("Exceção no método 'retornarCampoCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)

        End Try

    End Function
#End Region

#Region "Métodos privados"

    Private Sub alterarCidade(ByVal iIdCidade As Int32, _
                              ByVal iIdEstado As Int32, _
                              ByVal sCidade As String)
        Try
            Me.objCidade.alterarCidade(iIdCidade, _
                                       iIdEstado, _
                                       sCidade)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'alterarCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Private Function inserirCidade(ByVal sCidade As String, _
                                   ByVal iIdEstado As Int32)
        Dim iIdCidade As Int32

        Try
            iIdCidade = Me.objCidade.inserirCidade(sCidade, _
                                                   iIdEstado)
            Return iIdCidade

        Catch ex As Exception
            Throw New Exception("Exceção no método 'inserirCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region
End Class
